<?php

$a = ['张三丰', '里  斯', '阿 kit', 'papi 酱', 'Jackson'];
outFormat(35, $a);

function outFormat(int $width, ?array $a): void
{
    if ($a === null) {
        return;
    }
    foreach ($a as $item) {
        // 去除字符串中的所有空格
        $str = str_replace(' ', '', $item);
        // 转换为UTF-8编码的字节数组
        $bytes = mb_convert_encoding($str, 'UTF-8');
        $hexParts = [];
        for ($i = 0; $i < strlen($bytes); $i++) {
            // 每个字节转换为两位大写16进制
            $hexParts[] = strtoupper(sprintf('%02X', ord($bytes[$i])));
        }
        // 拼接16进制串，各字节间用_分隔
        $hexStr = implode('_', $hexParts);
        // 计算原始字符串长度和16进制串长度
        $strLen = strlen($str);
        $hexLen = strlen($hexStr);
        // 计算需要填充的空格数
        $total = $strLen + $hexLen;
        $spaces = $total > $width ? 0 : ($width - $total);
        // 输出结果
        echo $str . str_repeat(' ', $spaces) . $hexStr . PHP_EOL;
    }
}
